package org.java.test;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;

/*
 大厅里有100盏灯，每盏灯都编了号码，分别为1-100。每盏灯由一个开关来控制。（开关按一下，灯亮，再按一下灯灭。开关的编号与被控制的灯相同。）开始时，灯是全灭的。现在按照以下规则按动开关。
第一次，将所有的灯点亮。
第二次，将所有2的倍数的开关按一下。
第三次，将所有3的倍数的开关按一下。
以此类推。第N次，将所有N的倍数的开关按一下。
问第N次（N大于等于2，且小于等于100）按完以后，大厅里还有几盏灯是亮的。
*/

public class TurnLight {
	private static int lightNum = 100;

	private static int ON = 1;

	private static int OFF = 0;

	private ArrayList list;

	public static void main(String[] args) throws IOException
	{
		int n=0, onLight;
		try
		{
			BufferedReader br = new BufferedReader(
				new InputStreamReader(System.in));
		    n = Integer.parseInt(br.readLine());
		}
		catch (IOException ie)
		{
			ie.printStackTrace();
		}
		
		TurnLight tl = new TurnLight();
		tl.list = new ArrayList();
		
		tl.initList();

		tl.turnMethod(n);

		onLight = tl.count();

		System.out.println("经过" + n + "次按开关，大厅里还有" 
			+ onLight + "盏灯亮着");
		
		tl.printLightNo();
	}

	private void initList()
	{
		for(int i=0; i<100; i++)
		{
			list.add(ON);
		}
	}

	private void turnMethod(int n)
	{
		if(n>100 || n<2)
			return;
		else
		{
			for(int j=2; j<=n; j++)
			{
				for(int i=j; i<lightNum; i=i+j)
				{
					if(list.get(i).equals(ON))
					{
						list.set(i, OFF);
					}
					else if(list.get(i).equals(OFF))
					{
						list.set(i, ON);
					}
					else
						continue;

				}
			}
		}
	}

	private int count()
	{
		int onNum = 0;
		for(int i=0; i<lightNum; i++)
		{
			if(list.get(i).equals(ON))
				onNum++;
		}
		return onNum;
	}
	
	private void printLightNo()
	{
		System.out.println("亮着的灯的编号：");
		for(int i=0; i<100; i++)
		{
			if(list.get(i).equals(ON))
			{
				System.out.println(i+1 + " ");
			}
		}
	}

}
